package edu.uoc.tds.pec4.vista;

import edu.uoc.tds.pec4.model.SS4_Acceso;
import edu.uoc.tds.pec4.model.SS4_DatosInscripcion;
import edu.uoc.tds.pec4.model.SS4_Inscripcion;
import edu.uoc.tds.pec4.util.ExceptionUtils;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.rmi.RemoteException;
import javax.swing.JLabel;
import javax.swing.JPanel;
import edu.uoc.tds.pec4.util.LanguageUtils;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import edu.uoc.tds.pec4.vista.base.JPanelBase;

/**
 * Tecnicas de Desarrollo de Software - (UOC)
 * Clase para visualizar la pantalla que visualiza datos de un evento
 * @author Pedro Bauzá Picó
 * @version 1.0
 */
public class SS4_PantallaDatosInscripcion extends JPanelBase {

    private SS4_PantallaMenu SS4_PantallaMenu;
    private JLabel jlabel_DatosEvento;
    private JLabel jlabel_Nombre;
    private JLabel jlabel_DatosBancarios;
    private JTextArea jtextarea_Descripcion;
    private JPanel panelCentral;
    private JTextField jtextfield_Nombre;
    private JTextField jtextfield_Apellido1;
    private JTextField jtextfield_Apellido2;
    private JTextField jtextfield_Entidad;
    private JTextField jtextfield_Oficina;
    private JTextField jtextfield_Digito;
    private JTextField jtextfield_Cuenta;
    private JButton jbutton_Confirmar;
    private JButton jbutton_Salir;
    private SS4_DatosInscripcion datosInscripcion;
    private SS4_Acceso acceso;

    public SS4_PantallaDatosInscripcion(SS4_PantallaMenu SS4_PantallaMenu, SS4_DatosInscripcion datosInscripcion) {
        super();
        this.SS4_PantallaMenu = SS4_PantallaMenu;
        this.acceso = SS4_PantallaMenu.getAcceso();
        this.datosInscripcion = datosInscripcion;
        iniciarComponentes();
    }

    /*
     * Método para iniciar los componentes que contiene la pantalla
     */
    private void iniciarComponentes() {
        jlabel_DatosEvento = new JLabel(LanguageUtils.getMessage("DatosEvento.jlabel_DatosEvento.titulo"));
        jlabel_DatosEvento.setBounds(new Rectangle(115, 20, 176, 25));
        jlabel_Nombre = new JLabel(LanguageUtils.getMessage("DatosEvento.jlabel_Nombre.titulo"));
        jlabel_Nombre.setBounds(new Rectangle(115, 280, 176, 25));
        jlabel_DatosBancarios = new JLabel(LanguageUtils.getMessage("DatosEvento.jlabel_DatosBancarios.titulo"));
        jlabel_DatosBancarios.setBounds(new Rectangle(115, 320, 176, 25));
        jtextarea_Descripcion = new JTextArea(5, 20);
        jtextarea_Descripcion.setBounds(new Rectangle(115, 50, 465, 205));
        jtextarea_Descripcion.setText(this.datosInscripcion.getTextoFormateado());
        jtextfield_Nombre = new JTextField();
        jtextfield_Nombre.setBounds(new Rectangle(220, 280, 100, 25));
        jtextfield_Nombre.setEditable(false);
        jtextfield_Apellido1 = new JTextField();
        jtextfield_Apellido1.setBounds(new Rectangle(340, 280, 100, 25));
        jtextfield_Apellido1.setEditable(false);
        jtextfield_Apellido2 = new JTextField();
        jtextfield_Apellido2.setBounds(new Rectangle(460, 280, 100, 25));
        jtextfield_Apellido2.setEditable(false);
        jtextfield_Entidad = new JTextField();
        jtextfield_Entidad.setBounds(new Rectangle(220, 320, 40, 25));
        jtextfield_Entidad.setEditable(false);
        jtextfield_Oficina = new JTextField();
        jtextfield_Oficina.setBounds(new Rectangle(280, 320, 40, 25));
        jtextfield_Oficina.setEditable(false);
        jtextfield_Digito = new JTextField();
        jtextfield_Digito.setBounds(new Rectangle(340, 320, 40, 25));
        jtextfield_Digito.setEditable(false);
        jtextfield_Cuenta = new JTextField();
        jtextfield_Cuenta.setBounds(new Rectangle(400, 320, 80, 25));
        jtextfield_Cuenta.setEditable(false);
        obtenerUsuarioEvento();
        jbutton_Confirmar = new JButton();
        jbutton_Confirmar.setText(LanguageUtils.getMessage("DatosEvento.jbutton_Confirmar.titulo"));
        jbutton_Confirmar.setName("jbutton_Confirmar");
        jbutton_Confirmar.setBounds(new Rectangle(115, 360, 150, 25));
        jbutton_Salir = new JButton();
        jbutton_Salir.setText(LanguageUtils.getMessage("InscripcionEvento.jbutton_Salir.titulo"));
        jbutton_Salir.setName("jbutton_Salir");
        jbutton_Salir.setBounds(new Rectangle(430, 360, 150, 25));
        jbutton_Confirmar.addActionListener(SS4_PantallaMenu);
        jbutton_Salir.addActionListener(SS4_PantallaMenu);

        setLayout(new BorderLayout());
        panelCentral = new JPanel();
        panelCentral.setLayout(null);
        panelCentral.add(jlabel_DatosEvento);
        panelCentral.add(jlabel_Nombre);
        panelCentral.add(jlabel_DatosBancarios);
        panelCentral.add(jtextarea_Descripcion);
        panelCentral.add(jtextfield_Nombre);
        panelCentral.add(jtextfield_Apellido1);
        panelCentral.add(jtextfield_Apellido2);
        panelCentral.add(jtextfield_Entidad);
        panelCentral.add(jtextfield_Oficina);
        panelCentral.add(jtextfield_Digito);
        panelCentral.add(jtextfield_Cuenta);
        panelCentral.add(jbutton_Confirmar);
        panelCentral.add(jbutton_Salir);
        add(panelCentral, BorderLayout.CENTER);
    }

    /*
     * Metodo que obtiene la informacion del usuario
     */
    private void obtenerUsuarioEvento() {
        jtextfield_Nombre.setText(this.acceso.getNombre());
        jtextfield_Apellido1.setText(this.acceso.getApellido1());
        jtextfield_Apellido2.setText(this.acceso.getApellido2());
        jtextfield_Entidad.setText(this.acceso.getCcc_banco());
        jtextfield_Oficina.setText(this.acceso.getCcc_sucursal());
        jtextfield_Digito.setText(this.acceso.getCcc_dc());
        jtextfield_Cuenta.setText(this.acceso.getCcc_cuenta());
    }

    /**
     * Acción que se ejecutará al pulsar el botón
     * @param  Nombre del boton que se ha pulsado
     */
    public void componentePulsado(ActionEvent e) {
        if (e.getSource() == jbutton_Confirmar) {
            if (altaInscripcionEvento()) {
                ExceptionUtils.visualizarInformacion(LanguageUtils.getMessage("DatosEvento.Alta"));
                SS4_PantallaMenu.setPanelCentral(new SS4_PanelInicial());
            } else {
                ExceptionUtils.visualizarError(LanguageUtils.getMessage("DatosEvento.ERR_InscripcionEvento"));
            }
        } else if (e.getSource() == jbutton_Salir) {
            SS4_PantallaMenu.setPanelCentral(new SS4_PanelInicial());
        }
    }

    /*
     * Inscripcion de un usuario a un evento
     */
    private Boolean altaInscripcionEvento() {
        try {
            SS4_Inscripcion inscripcion = new SS4_Inscripcion();
            inscripcion.setId_evento(datosInscripcion.getCod_Evento());
            inscripcion.setId_usuario(acceso.getCod_usuario());
            inscripcion.setFecha_inscripcion(new java.sql.Date(new java.util.Date().getTime()));
            if (this.SS4_PantallaMenu.getRemotoConexion().insertInscripcion(inscripcion) == 1) {
                return true;
            } else {
                return false;
            }
        } catch (RemoteException ex) {
            ExceptionUtils.visualizarError(ExceptionUtils.ERR_Remote);
        } catch (Exception ex) {
            ExceptionUtils.visualizarError(LanguageUtils.getMessage("DatosEvento.ERR_InscripcionEvento"));
        }
        return false;
    }
}
